/**
 * File Name	: FixedFSpec.cpp
 * Location		: /Data/
 * Lib.Name		: Data.a
 * Designer		: OS (12-09-06)
 */

#include "stdafx.h"
#include "FixedFSpec.h"

namespace Core
{

	FixedFSpec::FixedFSpec()
	{
	}

	FixedFSpec::~FixedFSpec()
	{
	}

	void FixedFSpec::Init()
	{
	}

	void FixedFSpec::Reset()
	{
		for(unsigned int i=0; i<m_DataItems.size(); i++)
		{
			if(m_DataItems[i]!=NULL)
			{
				m_DataItems[i]->Reset();
				m_DataItems[i]->Set();
			}
		}
	}

	void FixedFSpec::ReadRawData(Core::RawData &p_Data)
	{
		for(unsigned int i=0; i<m_DataItems.size(); i++)
		{
			if(m_DataItems[i]!=NULL) m_DataItems[i]->ReadRawData(p_Data);
		}
		Init();
	}

	void FixedFSpec::WriteRawData(Core::RawData &p_Data)
	{
		Init();
		for(unsigned int i=0; i<m_DataItems.size(); i++)
		{
			if(m_DataItems[i]!=NULL) m_DataItems[i]->WriteRawData(p_Data);
		}
	}

	std::vector<DataField*>& FixedFSpec::GetDataItems()
	{
		return m_DataItems;
	}

	void FixedFSpec::ReadJSON(Json::Value& pValue) {
		for (unsigned int i = 0 ; i < m_DataItems.size() ; i++) {
			if (m_DataItems[i] != NULL) {
				//char index[10];
				//sprintf(index , "%d" , i+1);
				unsigned int index = i+1;

				if (pValue["s"][index].asUInt() == 1) {
					m_DataItems[i]->Set();
				}

				m_DataItems[i]->ReadJSON(pValue["v"][index]);

				//m_DataItems[i]->WriteJSON(pValue[index]["value"]);
			}
		}
		Init();
	}

	void FixedFSpec::WriteJSON(Json::Value& pValue) {
	    Init();
		for (unsigned int i = 0 ; i < m_DataItems.size() ; i++) {
			if (m_DataItems[i] != NULL) {
//				char index[10];
//				sprintf(index , "%d" , i+1);
				unsigned int index = i+1;

				pValue["s"][index] = m_DataItems[i]->Isset() ? 1 : 0;
				//pValue["name"][index] = m_DataItems[i]->GetName();
				m_DataItems[i]->WriteJSON(pValue["v"][index]);
//                pValue[index]["s"] = m_DataItems[i]->Isset() ? 1 : 0;
//				pValue[index]["name"] = m_DataItems[i]->GetName();
//				m_DataItems[i]->WriteJSON(pValue[index]["v"]);
			}
		}

		/*DI010.WriteJSON(pValue["10"]);
		DI015.WriteJSON(pValue["15"]);
		DI040.WriteJSON(pValue["40"]);
		DI130.WriteJSON(pValue["130"]);
		DI136.WriteJSON(pValue["136"]);
		DI220.WriteJSON(pValue["220"]);
		DI300.WriteJSON(pValue["300"]);*/
	}
}
